草庐IT

Java TLS-PSK 套接字

全部标签

Java TCP/IP 套接字延迟 - 停留在 50 μs(微秒)? (用于 Java IPC)

我们一直在分析和分析我们的应用程序,以尽可能减少延迟。我们的应用程序由3个独立的Java进程组成,它们都在同一台服务器上运行,它们通过TCP/IP套接字相互传递消息。我们已将第一个组件的处理时间减少到25微秒,但我们发现TCP/IP套接字写入(在本地主机上)到下一个组件总是需要大约50微秒。我们看到了另一种异常行为,因为接受连接的组件可以更快地写入(即不是TCP/IP专家,我不知道可以做些什么来加快速度。Unix域套接字会更快吗?内存映射文件?还有哪些其他机制可能是将数据从一个Java进程传递到另一个进程的更快方法?2011年6月21日更新我们创建了2个基准应用程序,一个用Java,一

c# - 同步比。 .NET 中的异步套接字性能

我读到的有关.NET套接字的所有内容都表明异步模式提供了更好的性能(尤其是使用新的SocketAsyncEventArgs可以节省分配)。如果我们谈论的服务器有很多客户端连接,并且不可能为每个连接分配一个线程,我认为这是有道理的。然后我可以看到使用ThreadPool线程并在其上获取异步回调的优势。但在我的应用程序中,我是客户端,我只需要收听一台服务器通过一个tcp连接发送市场报价数据。现在,我创建了一个线程,将优先级设置为最高,并用它调用Socket.Receive()。我的线程阻塞在这个调用上,并在新数据到达时唤醒。如果我将其切换为异步模式以便在有新数据时获得回调,我会看到两个问题

Java TCP/IP 套接字性能问题

我们的应用程序通过Java中的TCP/IP套接字非常快速地读取数据。我们使用带有非阻塞套接字和选择器的NIO库来指示准备好读取。平均而言,读取和处理读取数据的总处理时间为亚毫秒。然而,我们经常看到10-20毫秒的尖峰。(在Linux上运行)。使用tcpdump我们可以看到tcpdump读取2条离散消息之间的时间差,并将其与我们的应用程序时间进行比较。我们看到tcpdump似乎没有延迟,而应用程序可以显示20毫秒。我们非常确定这不是GC,因为GC日志几乎没有显示FullGC,并且在JDK6中(据我了解)默认GC是并行的,所以它不应该暂停应用程序线程(除非完整的GC)。看起来Java的Se

java - 如何为 Java 套接字指定端口范围?

在Java中,您可以将数字零作为Socket或DatagramSocket构造函数的单个参数。然后Java将该Socket绑定(bind)到一个空闲端口。是否可以将端口查找限制在特定范围内? 最佳答案 嗯,看完文档后,我认为你做不到。您可以绑定(bind)到任何端口,如果NotAcceptable则重新绑定(bind),或者重复绑定(bind)到您范围内的端口直到成功。第二种方法将是最“有效”的。我对这个答案感到不安,因为它...不优雅,但我真的找不到其他任何东西:/ 关于java-如何

android - 通过套接字查看 Web 服务器。 . .

目前,我为一个客户提供以下架构支持,该架构用于工业制造过程:他们有一个在控制工业机械的PC上运行的Windows程序。他们有一个专有应用程序(我为他们维护)在Android设备(基本上是手机)上运行,该应用程序通过TCP套接字与PC软件无线连接,因此它可以远程控制这些工业过程。客户现在想要的是一个在PC上运行的网络服务器和一个内置于应用程序中的网络浏览器,以控制一些不受他的Windows程序控制的额外进程。我在PC上设置了一个WAMP服务器和一个示例网页,我可以在PC上的任何浏览器上看到它作为“本地主机”。我知道如何通过WebView类将网络浏览器View添加到Android应用程序。

networking - 多个套接字可以与 UDP 的同一个端口相关联吗?

我认为多个套接字可以与同一个TCP端口相关联。但是同样的事情也适用于UDP吗? 最佳答案 在TCP中将多个套接字与一个端口相关联的唯一方法是监听然后接受。这种情况下的目的是为每个传入的客户端提供一个唯一的套接字,以便将它们的字节流分开。在UDP的情况下你不需要它,因为没有字节流。您可以使用单个UDP套接字编写整个UDP服务器。您刚刚读取并发送给该客户端的处理程序,该处理程序通过相同的套接字写回响应。 关于networking-多个套接字可以与UDP的同一个端口相关联吗?,我们在Stack

sockets - 正确关闭 TCP 套接字

“优雅地”关闭TCP套接字的推荐方法是什么?我了解到,在读取主机缓冲区中的所有剩余数据之前关闭()可能会给远程主机带来问题(他可能会丢失接收缓冲区中已被确认的所有数据,但不会尚未被他的申请阅读)。对吗?避免这种情况的好方法是什么?有什么方法可以告诉API我真的不关心由于忽略任何剩余的缓冲数据并关闭套接字而丢失的数据吗?或者我是否必须在应用程序协议(protocol)级别考虑问题并使用某种隐式或显式“传输结束”信号让对方知道关闭套接字以进行读取是安全的? 最佳答案 1)调用shutdown表示您不会再向套接字写入任何数据。2)继续从套

.net - .Net 中的套接字服务器、SocketAsyncEventArgs 和并发连接

我一直在编写一个基于CodeProject上的套接字服务器的套接字服务器它本身源自原始Microsoftexample.在这两种情况下,入站消息都会使用相同的SocketAsyncEventArgs立即返回给发件人。在我的例子中,我需要在回复客户端之前发送入站消息以进行进一步的异步处理。问题是返回的响应可能会尝试使用相同的SocketAsyncEventArgs作为来自客户端的进一步消息。发生这种情况时,我得到这个异常:“使用此SocketAsyncEventArgs实例的异步套接字操作已在进行中”因此,(我相信)我需要一个单独的SocketAsyncEventArgs池,用于返回消息

c# - 在 Internet 上保持 TCP/IP 连接的套接字保持事件状态——什么时候?如何?多少钱?

更新:如果您想省去冗长的序言,请跳至答案。TCP/IP连接KeepAlives指定为至少每两小时一次:https://www.rfc-editor.org/rfc/rfc1122#page-101.问题是这是写于1989年的,并且担心发送额外的KeepAlive数据包的成本!然而,它仍然是大多数操作系统根据规范在一段时间不活动后向连接的套接字发送KeepAlives的默认时间!当然,现在大多数连接在此之前超时,如果处于非事件状态,并且如果通过Internet连接到对等点,则在此之前您不知情(尽管设置的超时高于此时间-我怀疑是因为它们之间的路由器表不会打扰保持它还活着——我一直想知道泄露

将 uint16_t 转换为 char[2] 以通过套接字发送 (unix)

我知道大致上有一些东西..但我的大脑受伤了,我找不到任何东西来做这件事......我正在尝试通过unix套接字发送一个16位无符号整数。为此,我需要将uint16_t转换为两个字符,然后我需要在连接的另一端读取它们并将其转换回来转换为unsignedint或uint16_t,此时它使用2bytes还是4bytes并不重要(我运行的是64位,这就是为什么我不能使用unsignedint:)顺便说一句,我在C中这样做谢谢 最佳答案 为什么不使用掩码和移位将其分解成字节?uint16_tvalue=12345;charlo=value&0